package com.ybwh.springboot2.common.mybatis.plugin.sass.ds;

import javax.sql.DataSource;

/**
 * <p>
 * 基于独立数据库模式的sass数据源
 * </p>
 *
 * @author fanbeibei
 * @version 1.0.0
 * @date 2022/12/27 12:06
 */
public interface SassDataSource extends DataSource {
    /**
     * 当前的租户ID
     *
     * @return
     */
    String currentTenantId();

    /**
     * @return
     */
    default DataSource getDataSource(String tenantId){
        return getDataSource(tenantId,false);
    }

    /**
     *
     * @param tenantId
     * @param returnGlobalIfNull  如果为空返回全局的数据源
     * @return
     */
    DataSource getDataSource(String tenantId,boolean returnGlobalIfNull);


    /**
     * @param tenantId   租户ID
     * @param dataSource
     */
    void addDataSource(String tenantId, DataSource dataSource);


    /**
     * @param tenantId 租户ID
     */
    void removeDataSource(String tenantId);


    /**
     * @param tenantId   租户ID
     * @param dataSource
     */
    void replaceDataSource(String tenantId, DataSource dataSource);


    /**
     * 获取全局数据的数据源
     *
     * @return
     */
    DataSource getGlobalDataSource();

}
